


// main 函数开始 第一次运行，检测ADC数据 判断，没开中断

void MC_Adc_Fault_Get(void)
{
		u8  U8_Cont;
		//	清除ADC中断标志位
		ADCC0 &=~ 0x20;
		for(U8_Cont=0;U8_Cont<16;U8_Cont++)
		{
				//	开始ADC转换
				ADCC0 |= 0x40;
				//	等待ADC转换结束
				while(!(ADCC0&0x20));
				//	清除标志位
				ADCC0 &=~0x20;
				Brake_Adc_Data+=(u16)(SCR0>>1);
				Speed_Adc_Data+=(u16)(SCR1>>1);
		}
		//	上电检测刹车是不是超出范围

		
		//	设置ADC中断优先级0
		//IP3 |= 0x40;
		//	打开ADC中断
		IE1 |= 0x40;
}

EA=1;//打开总中断




//在定时器中断内 设置启动转换

void MC_Adc_Scan_Set(void)
{
		if ((ADCC0&0x20)==0)ADCC0 |= 0x40;
}

//adc中断函数
void ADC_Rpt() interrupt ADC_VECTOR
{
		if ((ADCC0&0x20)!=0)
		{
				Adc_Data[0] = SCR0;
				Adc_Data[1] = SCR1;
				Adc_Scan_End = 1;
				ADCC0 &= ~0x20;						//清除ADC中断标志位
		}
}



//主函数内 一直检测

//	ADC数据处理
void MC_Adc_Data_Get(void)
{
		if (Adc_Scan_End!=0)
		{
				u16 Adc_Data_Fresh;
				u32 Adc_Data_Novel;
				//	刹车把滤波
				Adc_Data_Novel = (u32)Brake_Adc_Data*7;
				Adc_Data_Fresh = (u16)(Adc_Data_Novel>>3);
				Brake_Adc_Data = Adc_Data[0]+Adc_Data_Fresh;
				//	调速把滤波
				Adc_Data_Novel = (u32)Speed_Adc_Data*7;
				Adc_Data_Fresh = (u16)(Adc_Data_Novel>>3);
				Speed_Adc_Data = Adc_Data[1]+Adc_Data_Fresh;
				//	巡航设置
				if (U8_Mark_Cruise_Set!=0)
				{
						if (U16_Save_Cruise_Bus<=Speed_Adc_Data)
								U16_Save_Hand_Bus = Speed_Adc_Data;
						else U16_Save_Hand_Bus = U16_Save_Cruise_Bus;
						
						if (Speed_Adc_Data<=TYPE_TURN_MEAN_AWAIT)SetBit(U8_Mark_Cruise_Set,1);
						
						if (ValBit(U8_Mark_Cruise_Set,1)&&(Speed_Adc_Data>=TYPE_TURN_MEAN_CRUIS))
						{
								U8_Mark_Cruise_Set = 0;
								U32_Time_Cruise_Matic = 0;
						}
				}
				else U16_Save_Hand_Bus = Speed_Adc_Data;
				
				Adc_Scan_End = 0;
		}
}
